[INFO] fetching crate ukanren 0.0.5...
[INFO] fixing ukanren-0.0.5 against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=end=2015,2024 for pr-157817-2
[INFO] extracting crate ukanren 0.0.5 into /workspace/builds/worker-2-tc2/source
[INFO] started tweaking crates.io crate ukanren 0.0.5
[INFO] finished tweaking crates.io crate ukanren 0.0.5
[INFO] tweaked toml for crates.io crate ukanren 0.0.5 written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate ukanren 0.0.5 on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 6 packages to latest compatible versions
[INFO] [stderr]       Adding itertools v0.10.5 (available: v0.15.0)
[INFO] [stderr]       Adding rpds v0.9.0 (available: v1.2.1)
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 28982bff82a8ff80afc1409d1018fdb46b4577fdf1139dcae987106c7b771e67
[INFO] running `Command { std: "docker" "start" "28982bff82a8ff80afc1409d1018fdb46b4577fdf1139dcae987106c7b771e67", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "28982bff82a8ff80afc1409d1018fdb46b4577fdf1139dcae987106c7b771e67" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "28982bff82a8ff80afc1409d1018fdb46b4577fdf1139dcae987106c7b771e67", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "28982bff82a8ff80afc1409d1018fdb46b4577fdf1139dcae987106c7b771e67" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=end=2015,2024", kill_on_drop: false }`
[INFO] [stderr] crater-edition-check: migrating to next edition
[INFO] [stderr]    Migrating Cargo.toml from 2018 edition to 2021
[INFO] [stderr]     Checking archery v0.4.0
[INFO] [stderr]     Checking take_mut v0.2.2
[INFO] [stderr]     Checking rpds v0.9.0
[INFO] [stderr]     Checking ukanren v0.0.5 (/opt/rustwide/workdir)
[INFO] [stderr]    Migrating src/lib.rs from 2018 edition to 2021
[INFO] [stderr]    Migrating tests/appendo.rs from 2018 edition to 2021
[INFO] [stderr]    Migrating tests/goals.rs from 2018 edition to 2021
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.47s
[INFO] [stderr] crater-edition-check: ukanren v0.0.5 (/opt/rustwide/workdir) updating edition from 2018 to 2021
[INFO] [stderr]     Checking ukanren v0.0.5 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2.06s
[INFO] [stderr] crater-edition-check: migrating to next edition
[INFO] [stderr]    Migrating Cargo.toml from 2018 edition to 2021
[INFO] [stderr]     Checking ukanren v0.0.5 (/opt/rustwide/workdir)
[INFO] [stderr]    Migrating src/lib.rs from 2021 edition to 2024
[INFO] [stderr]        Fixed src/goal.rs (3 fixes)
[INFO] [stderr]        Fixed src/state.rs (4 fixes)
[INFO] [stdout] warning: `impl Goal<Iter = std::option::IntoIter<State>> + Clone + 'static` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]    --> src/goal.rs:199:6
[INFO] [stdout]     |
[INFO] [stdout] 199 | ) -> impl Goal<Iter = std::option::IntoIter<State>> + Clone + 'static {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: specifically, these lifetimes are in scope but not mentioned in the type's bounds
[INFO] [stdout]    --> src/goal.rs:197:8
[INFO] [stdout]     |
[INFO] [stdout] 197 |     u: &impl ToValue,
[INFO] [stdout]     |        ^
[INFO] [stdout] 198 |     v: &impl ToValue,
[INFO] [stdout]     |        ^
[INFO] [stdout]     = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/goal.rs:197:9
[INFO] [stdout]     |
[INFO] [stdout] 197 |     u: &impl ToValue,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 198 |     v: &impl ToValue,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout]     = note: `--force-warn impl-trait-overcaptures` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 196 ~ pub fn eq<T: ToValue, U: ToValue>(
[INFO] [stdout] 197 ~     u: &T,
[INFO] [stdout] 198 ~     v: &U,
[INFO] [stdout] 199 ~ ) -> impl Goal<Iter = std::option::IntoIter<State>> + Clone + 'static + use<T, U> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl Goal<Iter = std::option::IntoIter<State>> + Clone + 'static` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]    --> src/goal.rs:199:6
[INFO] [stdout]     |
[INFO] [stdout] 199 | ) -> impl Goal<Iter = std::option::IntoIter<State>> + Clone + 'static {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: specifically, these lifetimes are in scope but not mentioned in the type's bounds
[INFO] [stdout]    --> src/goal.rs:197:8
[INFO] [stdout]     |
[INFO] [stdout] 197 |     u: &impl ToValue,
[INFO] [stdout]     |        ^
[INFO] [stdout] 198 |     v: &impl ToValue,
[INFO] [stdout]     |        ^
[INFO] [stdout]     = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/goal.rs:197:9
[INFO] [stdout]     |
[INFO] [stdout] 197 |     u: &impl ToValue,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 198 |     v: &impl ToValue,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout]     = note: `--force-warn impl-trait-overcaptures` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 196 ~ pub fn eq<T: ToValue, U: ToValue>(
[INFO] [stdout] 197 ~     u: &T,
[INFO] [stdout] 198 ~     v: &U,
[INFO] [stdout] 199 ~ ) -> impl Goal<Iter = std::option::IntoIter<State>> + Clone + 'static + use<T, U> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Migrating tests/goals.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating tests/appendo.rs from 2021 edition to 2024
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2.99s
[INFO] [stderr] crater-edition-check: ukanren v0.0.5 (/opt/rustwide/workdir) updating edition from 2021 to 2024
[INFO] [stderr]     Checking ukanren v0.0.5 (/opt/rustwide/workdir)
[INFO] [stdout] error: lifetime may not live long enough
[INFO] [stdout]  --> tests/appendo.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 6 |           .or(fresh(move |a: Value, d: Value, res: Value| {
[INFO] [stdout]   |                     -------------------------------------
[INFO] [stdout]   |                     |                                   |
[INFO] [stdout]   |                     |                                   return type of closure `ukanren::And<ukanren::And<impl ukanren::Goal<Iter = std::option::IntoIter<ukanren::State>> + Clone + 'static, impl ukanren::Goal<Iter = std::option::IntoIter<ukanren::State>> + Clone + 'static>, ukanren::BoxedGoal<impl Iterator<Item = ukanren::State>>>` contains a lifetime `'2`
[INFO] [stdout]   |                     lifetime `'1` represents this closure's body
[INFO] [stdout] 7 | /             eq(&(a.clone(), d.clone()), &first)
[INFO] [stdout] 8 | |                 .and(eq(&(a, res.clone()), &out))
[INFO] [stdout] 9 | |                 .and(appendo(d, second.clone(), res))
[INFO] [stdout]   | |_____________________________________________________^ returning this value requires that `'1` must outlive `'2`
[INFO] [stdout]   |
[INFO] [stdout]   = note: closure implements `Fn`, so references to captured variables can't escape the closure
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0515]: cannot return value referencing temporary value
[INFO] [stdout]    --> tests/appendo.rs:7:13
[INFO] [stdout]     |
[INFO] [stdout]   7 | /             eq(&(a.clone(), d.clone()), &first)
[INFO] [stdout]   8 | |                 .and(eq(&(a, res.clone()), &out))
[INFO] [stdout]     | |                          ---------------- temporary value created here
[INFO] [stdout]   9 | |                 .and(appendo(d, second.clone(), res))
[INFO] [stdout]     | |_____________________________________________________^ returns a value referencing data owned by the current function
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> tests/appendo.rs:8:22
[INFO] [stdout]     |
[INFO] [stdout]   8 |                 .and(eq(&(a, res.clone()), &out))
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: if you can modify this crate, add a precise capturing bound to avoid overcapturing: `+ use</* Args */>`
[INFO] [stdout]    --> src/goal.rs:199:6
[INFO] [stdout]     |
[INFO] [stdout] 199 | ) -> impl Goal<Iter = std::option::IntoIter<State>> + Clone + 'static {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0515]: cannot return value referencing temporary value
[INFO] [stdout]    --> tests/appendo.rs:7:13
[INFO] [stdout]     |
[INFO] [stdout]   7 |               eq(&(a.clone(), d.clone()), &first)
[INFO] [stdout]     |               ^   ---------------------- temporary value created here
[INFO] [stdout]     |  _____________|
[INFO] [stdout]     | |
[INFO] [stdout]   8 | |                 .and(eq(&(a, res.clone()), &out))
[INFO] [stdout]   9 | |                 .and(appendo(d, second.clone(), res))
[INFO] [stdout]     | |_____________________________________________________^ returns a value referencing data owned by the current function
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> tests/appendo.rs:7:13
[INFO] [stdout]     |
[INFO] [stdout]   7 |             eq(&(a.clone(), d.clone()), &first)
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: if you can modify this crate, add a precise capturing bound to avoid overcapturing: `+ use</* Args */>`
[INFO] [stdout]    --> src/goal.rs:199:6
[INFO] [stdout]     |
[INFO] [stdout] 199 | ) -> impl Goal<Iter = std::option::IntoIter<State>> + Clone + 'static {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: lifetime may not live long enough
[INFO] [stdout]   --> tests/appendo.rs:54:13
[INFO] [stdout]    |
[INFO] [stdout] 53 |           .or(fresh(move |a: Value, d: Value, rd: Value| {
[INFO] [stdout]    |                     ------------------------------------
[INFO] [stdout]    |                     |                                  |
[INFO] [stdout]    |                     |                                  return type of closure `ukanren::And<ukanren::And<impl ukanren::Goal<Iter = std::option::IntoIter<ukanren::State>> + Clone + 'static, ukanren::BoxedGoal<impl Iterator<Item = ukanren::State>>>, ukanren::BoxedGoal<impl Iterator<Item = ukanren::State>>>` contains a lifetime `'2`
[INFO] [stdout]    |                     lifetime `'1` represents this closure's body
[INFO] [stdout] 54 | /             eq(&(a.clone(), d.clone()), &first)
[INFO] [stdout] 55 | |                 .and(appendo(rd.clone(), cons(&a, &()), second.clone()))
[INFO] [stdout] 56 | |                 .and(reverseo(d, rd))
[INFO] [stdout]    | |_____________________________________^ returning this value requires that `'1` must outlive `'2`
[INFO] [stdout]    |
[INFO] [stdout]    = note: closure implements `Fn`, so references to captured variables can't escape the closure
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0515]: cannot return value referencing temporary value
[INFO] [stdout]    --> tests/appendo.rs:54:13
[INFO] [stdout]     |
[INFO] [stdout]  54 |               eq(&(a.clone(), d.clone()), &first)
[INFO] [stdout]     |               ^   ---------------------- temporary value created here
[INFO] [stdout]     |  _____________|
[INFO] [stdout]     | |
[INFO] [stdout]  55 | |                 .and(appendo(rd.clone(), cons(&a, &()), second.clone()))
[INFO] [stdout]  56 | |                 .and(reverseo(d, rd))
[INFO] [stdout]     | |_____________________________________^ returns a value referencing data owned by the current function
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> tests/appendo.rs:54:13
[INFO] [stdout]     |
[INFO] [stdout]  54 |             eq(&(a.clone(), d.clone()), &first)
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: if you can modify this crate, add a precise capturing bound to avoid overcapturing: `+ use</* Args */>`
[INFO] [stdout]    --> src/goal.rs:199:6
[INFO] [stdout]     |
[INFO] [stdout] 199 | ) -> impl Goal<Iter = std::option::IntoIter<State>> + Clone + 'static {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0515]: cannot return value referencing function parameter `x`
[INFO] [stdout]    --> tests/goals.rs:5:28
[INFO] [stdout]     |
[INFO] [stdout]   5 |     let mut iter = run(|x| eq(&x, &x));
[INFO] [stdout]     |                            ^^^--^^^^^
[INFO] [stdout]     |                            |  |
[INFO] [stdout]     |                            |  `x` is borrowed here
[INFO] [stdout]     |                            returns a value referencing data owned by the current function
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> tests/goals.rs:5:28
[INFO] [stdout]     |
[INFO] [stdout]   5 |     let mut iter = run(|x| eq(&x, &x));
[INFO] [stdout]     |                            ^^^^^^^^^^
[INFO] [stdout] help: if you can modify this crate, add a precise capturing bound to avoid overcapturing: `+ use</* Args */>`
[INFO] [stdout]    --> src/goal.rs:199:6
[INFO] [stdout]     |
[INFO] [stdout] 199 | ) -> impl Goal<Iter = std::option::IntoIter<State>> + Clone + 'static {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0515]: cannot return value referencing function parameter `x`
[INFO] [stdout]    --> tests/goals.rs:5:28
[INFO] [stdout]     |
[INFO] [stdout]   5 |     let mut iter = run(|x| eq(&x, &x));
[INFO] [stdout]     |                            ^^^^^^^--^
[INFO] [stdout]     |                            |      |
[INFO] [stdout]     |                            |      `x` is borrowed here
[INFO] [stdout]     |                            returns a value referencing data owned by the current function
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> tests/goals.rs:5:28
[INFO] [stdout]     |
[INFO] [stdout]   5 |     let mut iter = run(|x| eq(&x, &x));
[INFO] [stdout]     |                            ^^^^^^^^^^
[INFO] [stdout] help: if you can modify this crate, add a precise capturing bound to avoid overcapturing: `+ use</* Args */>`
[INFO] [stdout]    --> src/goal.rs:199:6
[INFO] [stdout]     |
[INFO] [stdout] 199 | ) -> impl Goal<Iter = std::option::IntoIter<State>> + Clone + 'static {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0515]: cannot return value referencing function parameter `y`
[INFO] [stdout]    --> tests/goals.rs:36:31
[INFO] [stdout]     |
[INFO] [stdout]  36 |     let mut iter = run(|x, y| eq(&x, &y));
[INFO] [stdout]     |                               ^^^^^^^--^
[INFO] [stdout]     |                               |      |
[INFO] [stdout]     |                               |      `y` is borrowed here
[INFO] [stdout]     |                               returns a value referencing data owned by the current function
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> tests/goals.rs:36:31
[INFO] [stdout]     |
[INFO] [stdout]  36 |     let mut iter = run(|x, y| eq(&x, &y));
[INFO] [stdout]     |                               ^^^^^^^^^^
[INFO] [stdout] help: if you can modify this crate, add a precise capturing bound to avoid overcapturing: `+ use</* Args */>`
[INFO] [stdout]    --> src/goal.rs:199:6
[INFO] [stdout]     |
[INFO] [stdout] 199 | ) -> impl Goal<Iter = std::option::IntoIter<State>> + Clone + 'static {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0515]: cannot return value referencing function parameter `x`
[INFO] [stdout]    --> tests/goals.rs:36:31
[INFO] [stdout]     |
[INFO] [stdout]  36 |     let mut iter = run(|x, y| eq(&x, &y));
[INFO] [stdout]     |                               ^^^--^^^^^
[INFO] [stdout]     |                               |  |
[INFO] [stdout]     |                               |  `x` is borrowed here
[INFO] [stdout]     |                               returns a value referencing data owned by the current function
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> tests/goals.rs:36:31
[INFO] [stdout]     |
[INFO] [stdout]  36 |     let mut iter = run(|x, y| eq(&x, &y));
[INFO] [stdout]     |                               ^^^^^^^^^^
[INFO] [stdout] help: if you can modify this crate, add a precise capturing bound to avoid overcapturing: `+ use</* Args */>`
[INFO] [stdout]    --> src/goal.rs:199:6
[INFO] [stdout]     |
[INFO] [stdout] 199 | ) -> impl Goal<Iter = std::option::IntoIter<State>> + Clone + 'static {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0515]: cannot return value referencing function parameter `w`
[INFO] [stdout]    --> tests/goals.rs:43:37
[INFO] [stdout]     |
[INFO] [stdout]  43 |     let mut iter = run(|x, y, z, w| eq(&x, &y).and(eq(&z, &w)).or(eq(&x, &z).and(eq(&y, &w))));
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^^--^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                     |                     |
[INFO] [stdout]     |                                     |                     `w` is borrowed here
[INFO] [stdout]     |                                     returns a value referencing data owned by the current function
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> tests/goals.rs:43:52
[INFO] [stdout]     |
[INFO] [stdout]  43 |     let mut iter = run(|x, y, z, w| eq(&x, &y).and(eq(&z, &w)).or(eq(&x, &z).and(eq(&y, &w))));
[INFO] [stdout]     |                                                    ^^^^^^^^^^
[INFO] [stdout] help: if you can modify this crate, add a precise capturing bound to avoid overcapturing: `+ use</* Args */>`
[INFO] [stdout]    --> src/goal.rs:199:6
[INFO] [stdout]     |
[INFO] [stdout] 199 | ) -> impl Goal<Iter = std::option::IntoIter<State>> + Clone + 'static {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0515]: cannot return value referencing function parameter `z`
[INFO] [stdout]    --> tests/goals.rs:43:37
[INFO] [stdout]     |
[INFO] [stdout]  43 |     let mut iter = run(|x, y, z, w| eq(&x, &y).and(eq(&z, &w)).or(eq(&x, &z).and(eq(&y, &w))));
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^--^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                     |                 |
[INFO] [stdout]     |                                     |                 `z` is borrowed here
[INFO] [stdout]     |                                     returns a value referencing data owned by the current function
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> tests/goals.rs:43:52
[INFO] [stdout]     |
[INFO] [stdout]  43 |     let mut iter = run(|x, y, z, w| eq(&x, &y).and(eq(&z, &w)).or(eq(&x, &z).and(eq(&y, &w))));
[INFO] [stdout]     |                                                    ^^^^^^^^^^
[INFO] [stdout] help: if you can modify this crate, add a precise capturing bound to avoid overcapturing: `+ use</* Args */>`
[INFO] [stdout]    --> src/goal.rs:199:6
[INFO] [stdout]     |
[INFO] [stdout] 199 | ) -> impl Goal<Iter = std::option::IntoIter<State>> + Clone + 'static {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0515]: cannot return value referencing function parameter `y`
[INFO] [stdout]    --> tests/goals.rs:43:37
[INFO] [stdout]     |
[INFO] [stdout]  43 |     let mut iter = run(|x, y, z, w| eq(&x, &y).and(eq(&z, &w)).or(eq(&x, &z).and(eq(&y, &w))));
[INFO] [stdout]     |                                     ^^^^^^^--^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                     |      |
[INFO] [stdout]     |                                     |      `y` is borrowed here
[INFO] [stdout]     |                                     returns a value referencing data owned by the current function
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> tests/goals.rs:43:37
[INFO] [stdout]     |
[INFO] [stdout]  43 |     let mut iter = run(|x, y, z, w| eq(&x, &y).and(eq(&z, &w)).or(eq(&x, &z).and(eq(&y, &w))));
[INFO] [stdout]     |                                     ^^^^^^^^^^
[INFO] [stdout] help: if you can modify this crate, add a precise capturing bound to avoid overcapturing: `+ use</* Args */>`
[INFO] [stdout]    --> src/goal.rs:199:6
[INFO] [stdout]     |
[INFO] [stdout] 199 | ) -> impl Goal<Iter = std::option::IntoIter<State>> + Clone + 'static {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0515]: cannot return value referencing function parameter `x`
[INFO] [stdout]    --> tests/goals.rs:43:37
[INFO] [stdout]     |
[INFO] [stdout]  43 |     let mut iter = run(|x, y, z, w| eq(&x, &y).and(eq(&z, &w)).or(eq(&x, &z).and(eq(&y, &w))));
[INFO] [stdout]     |                                     ^^^--^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                     |  |
[INFO] [stdout]     |                                     |  `x` is borrowed here
[INFO] [stdout]     |                                     returns a value referencing data owned by the current function
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> tests/goals.rs:43:37
[INFO] [stdout]     |
[INFO] [stdout]  43 |     let mut iter = run(|x, y, z, w| eq(&x, &y).and(eq(&z, &w)).or(eq(&x, &z).and(eq(&y, &w))));
[INFO] [stdout]     |                                     ^^^^^^^^^^
[INFO] [stdout] help: if you can modify this crate, add a precise capturing bound to avoid overcapturing: `+ use</* Args */>`
[INFO] [stdout]    --> src/goal.rs:199:6
[INFO] [stdout]     |
[INFO] [stdout] 199 | ) -> impl Goal<Iter = std::option::IntoIter<State>> + Clone + 'static {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0515]: cannot return value referencing function parameter `x`
[INFO] [stdout]    --> tests/goals.rs:43:37
[INFO] [stdout]     |
[INFO] [stdout]  43 |     let mut iter = run(|x, y, z, w| eq(&x, &y).and(eq(&z, &w)).or(eq(&x, &z).and(eq(&y, &w))));
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^--^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                     |                                |
[INFO] [stdout]     |                                     |                                `x` is borrowed here
[INFO] [stdout]     |                                     returns a value referencing data owned by the current function
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> tests/goals.rs:43:67
[INFO] [stdout]     |
[INFO] [stdout]  43 |     let mut iter = run(|x, y, z, w| eq(&x, &y).and(eq(&z, &w)).or(eq(&x, &z).and(eq(&y, &w))));
[INFO] [stdout]     |                                                                   ^^^^^^^^^^
[INFO] [stdout] help: if you can modify this crate, add a precise capturing bound to avoid overcapturing: `+ use</* Args */>`
[INFO] [stdout]    --> src/goal.rs:199:6
[INFO] [stdout]     |
[INFO] [stdout] 199 | ) -> impl Goal<Iter = std::option::IntoIter<State>> + Clone + 'static {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0515]: cannot return value referencing function parameter `z`
[INFO] [stdout]    --> tests/goals.rs:43:37
[INFO] [stdout]     |
[INFO] [stdout]  43 |     let mut iter = run(|x, y, z, w| eq(&x, &y).and(eq(&z, &w)).or(eq(&x, &z).and(eq(&y, &w))));
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^--^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                     |                                    |
[INFO] [stdout]     |                                     |                                    `z` is borrowed here
[INFO] [stdout]     |                                     returns a value referencing data owned by the current function
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> tests/goals.rs:43:67
[INFO] [stdout]     |
[INFO] [stdout]  43 |     let mut iter = run(|x, y, z, w| eq(&x, &y).and(eq(&z, &w)).or(eq(&x, &z).and(eq(&y, &w))));
[INFO] [stdout]     |                                                                   ^^^^^^^^^^
[INFO] [stdout] help: if you can modify this crate, add a precise capturing bound to avoid overcapturing: `+ use</* Args */>`
[INFO] [stdout]    --> src/goal.rs:199:6
[INFO] [stdout]     |
[INFO] [stdout] 199 | ) -> impl Goal<Iter = std::option::IntoIter<State>> + Clone + 'static {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0515]: cannot return value referencing function parameter `y`
[INFO] [stdout]    --> tests/goals.rs:43:37
[INFO] [stdout]     |
[INFO] [stdout]  43 |     let mut iter = run(|x, y, z, w| eq(&x, &y).and(eq(&z, &w)).or(eq(&x, &z).and(eq(&y, &w))));
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^--^^^^^^^
[INFO] [stdout]     |                                     |                                               |
[INFO] [stdout]     |                                     |                                               `y` is borrowed here
[INFO] [stdout]     |                                     returns a value referencing data owned by the current function
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> tests/goals.rs:43:82
[INFO] [stdout]     |
[INFO] [stdout]  43 |     let mut iter = run(|x, y, z, w| eq(&x, &y).and(eq(&z, &w)).or(eq(&x, &z).and(eq(&y, &w))));
[INFO] [stdout]     |                                                                                  ^^^^^^^^^^
[INFO] [stdout] help: if you can modify this crate, add a precise capturing bound to avoid overcapturing: `+ use</* Args */>`
[INFO] [stdout]    --> src/goal.rs:199:6
[INFO] [stdout]     |
[INFO] [stdout] 199 | ) -> impl Goal<Iter = std::option::IntoIter<State>> + Clone + 'static {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0515]: cannot return value referencing function parameter `w`
[INFO] [stdout]    --> tests/goals.rs:43:37
[INFO] [stdout]     |
[INFO] [stdout]  43 |     let mut iter = run(|x, y, z, w| eq(&x, &y).and(eq(&z, &w)).or(eq(&x, &z).and(eq(&y, &w))));
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^--^^^
[INFO] [stdout]     |                                     |                                                   |
[INFO] [stdout]     |                                     |                                                   `w` is borrowed here
[INFO] [stdout]     |                                     returns a value referencing data owned by the current function
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> tests/goals.rs:43:82
[INFO] [stdout]     |
[INFO] [stdout]  43 |     let mut iter = run(|x, y, z, w| eq(&x, &y).and(eq(&z, &w)).or(eq(&x, &z).and(eq(&y, &w))));
[INFO] [stdout]     |                                                                                  ^^^^^^^^^^
[INFO] [stdout] help: if you can modify this crate, add a precise capturing bound to avoid overcapturing: `+ use</* Args */>`
[INFO] [stdout]    --> src/goal.rs:199:6
[INFO] [stdout]     |
[INFO] [stdout] 199 | ) -> impl Goal<Iter = std::option::IntoIter<State>> + Clone + 'static {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0515]: cannot return value referencing temporary value
[INFO] [stdout]    --> tests/goals.rs:51:31
[INFO] [stdout]     |
[INFO] [stdout]  51 |     let mut iter = run(|x, y| eq(&[x, y], &["hello", "world"]));
[INFO] [stdout]     |                               ^^^^------^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                               |   |
[INFO] [stdout]     |                               |   temporary value created here
[INFO] [stdout]     |                               returns a value referencing data owned by the current function
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> tests/goals.rs:51:31
[INFO] [stdout]     |
[INFO] [stdout]  51 |     let mut iter = run(|x, y| eq(&[x, y], &["hello", "world"]));
[INFO] [stdout]     |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: if you can modify this crate, add a precise capturing bound to avoid overcapturing: `+ use</* Args */>`
[INFO] [stdout]    --> src/goal.rs:199:6
[INFO] [stdout]     |
[INFO] [stdout] 199 | ) -> impl Goal<Iter = std::option::IntoIter<State>> + Clone + 'static {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0515`.
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0515`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `ukanren` (test "appendo") due to 5 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stderr] error: could not compile `ukanren` (test "goals") due to 13 previous errors
[INFO] running `Command { std: "docker" "inspect" "28982bff82a8ff80afc1409d1018fdb46b4577fdf1139dcae987106c7b771e67", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "28982bff82a8ff80afc1409d1018fdb46b4577fdf1139dcae987106c7b771e67", kill_on_drop: false }`
[INFO] [stdout] 28982bff82a8ff80afc1409d1018fdb46b4577fdf1139dcae987106c7b771e67
